package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionariocargo;

import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.jws.WebService;

import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import br.gov.mi.corporativo.dominio.entidade.rhmi.FuncionarioCargo;
import br.gov.mi.corporativo.dominio.repositorio.rhmi.FuncionarioCargoRepositorio;
import br.gov.mi.infraestrutura.crud.CrudServicoImpl;

@Component
@Transactional(readOnly=true)
@WebService(endpointInterface = "br.gov.mi.corporativo.dominio.boundary.rhmi.funcionariocargo.FuncionarioCargoEndPoint")
public class FuncionarioCargoServico extends CrudServicoImpl<FuncionarioCargo, Long, FuncionarioCargoRepositorio>  implements FuncionarioCargoEndPoint{

	@Inject
	public void setRepository(FuncionarioCargoRepositorio repositorio) {
		super.setRepositorio(repositorio);
	}

	@Override
	public FuncionarioCargo recuperarPorIdFuncionarioCargo(Long idFuncionarioCargo) {
		return repositorio.findByIdFuncionarioCargo(idFuncionarioCargo);
	}

	@Override
	public FuncionarioCargo recuperarPorFuncionarioByIdFuncionario(Long funcionarioByIdFuncionario) {
		return repositorio.findByFuncionarioByIdFuncionario(funcionarioByIdFuncionario);
	}

	@Override
	public FuncionarioCargo recuperarPorFuncionarioByIdFuncionarioChefeImediato(Long funcionarioByIdFuncionarioChefeImediato) {
		return repositorio.findByFuncionarioByIdFuncionarioChefeImediato(funcionarioByIdFuncionarioChefeImediato);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorSituacaoFuncional(Long situacaoFuncional) {
		return repositorio.findBySituacaoFuncional(situacaoFuncional);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorUnidadeEstruturaByIdUnidadeEstruturaLotacao(Long unidadeEstruturaByIdUnidadeEstruturaLotacao) {
		return repositorio.findByUnidadeEstruturaByIdUnidadeEstruturaExercicio(unidadeEstruturaByIdUnidadeEstruturaLotacao);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorCargoComissionado(Long cargoComissionado) {
		return repositorio.findByCargoComissionado(cargoComissionado);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorCargo(Long cargo) {
		return repositorio.findByCargo(cargo);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorUnidadeEstruturaByIdUnidadeEstruturaExercicio(Long unidadeEstruturaByIdUnidadeEstruturaExercicio) {
		return repositorio.findByUnidadeEstruturaByIdUnidadeEstruturaExercicio(unidadeEstruturaByIdUnidadeEstruturaExercicio);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorDtInicio(Date dtInicio) {
		return repositorio.findByDtInicio(dtInicio);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorDtTermino(Date dtTermino) {
		return repositorio.findByDtTermino(dtTermino);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorNmAutoridade(String nmAutoridade) {
		return repositorio.findByNmAutoridade(nmAutoridade);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorNrEscalao(String nrEscalao) {
		return repositorio.findByNrEscalao(nrEscalao);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorCsTipoGratificacao(String csTipoGratificacao) {
		return repositorio.findByCsTipoGratificacao(csTipoGratificacao);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorNrCargaHoraria(Long nrCargaHoraria) {
		return repositorio.findByNrCargaHoraria(nrCargaHoraria);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorStCargoEfetivo(String stCargoEfetivo) {
		return repositorio.findByStCargoEfetivo(stCargoEfetivo);
	}

	@Override
	public List<FuncionarioCargo> recuperarPorStRegistro(String stRegistro) {
		return repositorio.findByStRegistro(stRegistro);
	}
	
 
	
}
